package com.logistics.dto;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

/**
 * 订单查询请求 DTO（收货开票）
 */
@Data
public class OrderQueryRequest {
    
    /**
     * 当前页
     */
    private Integer current = 1;
    
    /**
     * 每页大小
     */
    private Integer size = 10;
    
    /**
     * 订单状态
     */
    private String orderStatus;
    
    /**
     * 订单编号
     */
    private String orderNo;
    
    /**
     * 货物编码
     */
    private String goodsCode;
    
    /**
     * 发货站点ID
     */
    private Long departureSiteId;
    
    /**
     * 到货站点ID
     */
    private Long arrivalSiteId;
    
    /**
     * 收货司机ID
     */
    private Long driverId;
    
    /**
     * 运输车辆ID
     */
    private Long vehicleId;
    
    /**
     * 付款方式
     */
    private String paymentMethod;
    
    /**
     * 开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;
    
    /**
     * 结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
    
    /**
     * 关键词搜索（运单号、货物编码、收发货人、电话、货物名称、司机、车辆、开票员）
     */
    private String keyword;
    
    /**
     * 发货人姓名
     */
    private String senderName;
    
    /**
     * 收货人姓名
     */
    private String receiverName;
    
    /**
     * 发货电话
     */
    private String senderPhone;
    
    /**
     * 收货电话
     */
    private String receiverPhone;
    
    /**
     * 货物名称
     */
    private String goodsName;
    
    /**
     * 司机姓名
     */
    private String driverName;
    
    /**
     * 司机电话
     */
    private String driverPhone;
    
    /**
     * 车牌号
     */
    private String vehiclePlate;
    
    /**
     * 开票员姓名
     */
    private String issuerName;
    
    /**
     * 开票员ID
     */
    private Long issuerId;

    /**
     * 装车时间-起
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime loadedAtStart;

    /**
     * 装车时间-止
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime loadedAtEnd;
}

